/**
 * OSAmI: Open Source Ambient Intelligence
 * A simple discovery protocol (based on multicast communications) for constrained devices.
 * Copyright (C) Lionel Debroux 2006 (as a TER/Magistere M1 student in the LSR-IMAG-ADELE team, for a demo in the H-Omega project)
 * Copyright (C) Lionel Debroux 2010 (as an engineer in the LCIS-INPG-CTSYS team, for a pre-demo in the FR part of the OSAMI project)
 * Contact: osami-general@osami-commons.org
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
 */

package fr.imag.adele.homega.impl.unidiscovery;

import java.io.IOException;

import fr.imag.adele.homega.impl.unicast.UnicastHandler;

/**
 * This interface defines the externally usable methods of the discovery bridge.
 */
public interface DiscoveryBridge {

	/**
	 * Send "getMetadata" DPWS message.
	 * @throws IOException 
	 */
	/*package*/ void getMetadata(String ipAddr, int port) throws IOException; // USEFUL?

	/**
	 * Send "Probe" discovery message.
	 * @param ipAddr IP address of discovery bridge.
	 * @throws IOException 
	 */
	public void probe(String type) throws IOException;

	/**
	 * Shuts the bridge down.
	 */
	public void shutdown();

	/**
	 * Convenience method used e.g. in DiscoveryTest, for setting up a generic (discovery-unaware) monitor that listens to all messages.
	 */
	/*package*/ UnicastHandler getHandler();

	/*package*/ String getAllMetadata();
}
